// jizi_macro::mod_pub!(package); // pub mod xxx ;
// jizi_macro::mod_flat!(args);  // mod xxx; pub use xxx::*;
// 
// use anyhow;
// 
// // clap是rust库，用于处理命令行参数。Parser是其中的一个trait
// use clap::Parser;
// 
// // tokio 是一个rust异步运行时，支持异步I/O
// // tokio::main将main标记成异步函数 自动设置Tokio运行时环境
#[tokio::main]  // 属性宏 将一个异步函数转化成同步函数  主要用于启动基于Tokio异步运行时的程序
async fn main() -> anyhow::Result<()> {  // 和fn main(){} 有什么区别
//     // async fn main() 是一个异步函数  允许使用await  可以执行异步操作
//     // main一般是同步的 可以使用tokio::main将其转成异步函数
//     // anyhow::Result<()> 是anyhow库的返回类型 提供更灵活用户友好的错误处理方式
// 
//     // 下面是典型的命令行参数处理逻辑
//     // std::env::args_os 返回一个迭代器  包含程序启动传递的所有命令行参数 每一个参数都是OsString
//     // nth(1) 获取迭代器的第二个元素  如果不存在返回None
//     // is_some_and 检查是否存在且检查内容是不是指定内容
//     // |s| ... 闭包  接受一个参数 类型缺省
//     if std::env::args_os().nth(1).is_some_and(|s| s == "-V" || s == "--version") {
//         println!(
//             "Ji {} ({} {})",
//             env!("CARGO_PKG_VERSION"), // 版本号
//             env!("VERGEN_GIT_SHA"),  // Git仓库当前SHA哈希  通常由构建工具在构建时注入
//             env!("VERGEN_BUILD_DATE"),  // 构建日期
//         );
//         return Ok(());
//     }
    Ok(())
}